
        <html>
			<head>
			     <title>Petya到底是个什么鬼 - 360安全卫士</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/14569">http://drops.wooyun.org/papers/14569</a></h1>
				
      <p>
        <p><strong>Author：Luke Viruswalker</strong></p>

<h1>0x00 简介</h1>

<hr />

<p>上个月底，德国老牌安全厂商歌德塔发布安全报告，报告中指出出现了一种名为Petya的新型敲诈木马。那么这个新型的敲诈木马到底是怎么回事呢？</p>

<h1>0x01 木马概述</h1>

<hr />

<p>木马本身其实技术上并不复杂：木马用C语言编写，通过修改系统所在磁盘包括主引导记录（MBR）在内的前63个扇区的数据，实现开机自动加载木马写入的恶意代码的目的。而后再强制引发系统重启，让计算机自动加载恶意代码，进而加密用户磁盘并展示敲诈界面。</p>

<!--more-->

<p>如上所述，两句话就能说明白木马的原理，但实际应用起来给我们的感受却是：简单！粗暴！但————有效！</p>

<h1>0x02 代码分析</h1>

<hr />

<h3>重启前的前期准备工作</h3>

<p>由于木马的主要传播途径来自于网盘分享，所以木马做的唯一的伪装就是在图标上————伪装成了一个自解压程序：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603332083171115.png" alt="p1" /></p>

<p>除此之外就不再有其他的伪装了，直切主题————打开C盘，并通过DeviceIOControl获取到C盘所在的物理磁盘。</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603332219050212.png" alt="p2" /></p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603332323903312.png" alt="p3" /></p>

<p>获取到磁盘之后，以可读可写的模式打开磁盘（其实就是为了写入）：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603332560905412.png" alt="p4" /></p>

<p>万事俱备，只欠东风————开始正式的写入了。木马写入的全部数据集中在磁盘的前63个扇区内，分为四个部分：1.修改磁盘第1个扇区（0柱面，0磁头，1扇区）的512字节内容————即修改MBR；2.将后续扇区空闲部分全部写入字符“7”（即HEX数据0x37）;3.第35个扇区开始填入总长度为8192字节（0x2000字节，即16个扇区的空间）的恶意代码；4.第55个扇区开始填入长度为512字节的配置数据。</p>

<ul>
<li>修改MBR</li>
</ul>

<p><img src="http://static.wooyun.org//drops/20160406/201604060333276979255.png" alt="p5" /></p>

<ul>
<li>用“7”填补空闲空间</li>
</ul>

<p><img src="http://static.wooyun.org//drops/20160406/201604060333285985765.png" alt="p6" /></p>

<ul>
<li>写入恶意代码</li>
</ul>

<p><img src="http://static.wooyun.org//drops/20160406/201604060333301205375.png" alt="p7" /></p>

<ul>
<li>写入配置数据</li>
</ul>

<p><img src="http://static.wooyun.org//drops/20160406/201604060333322689784.png" alt="p8" /></p>

<p>改写的都写完了，就剩重启了。木马并没有用最小儿科的手段去执行系统的shutdown命令，而是调用了一个ntdll中的ZwRaiseHardError函数触发硬件异常来制造蓝屏，以此达到强制重启的目的：</p>

<p><img src="http://static.wooyun.org//drops/20160406/201604060333333125395.png" alt="p9" /></p>

<h3>分析暂停，我们来看看磁盘</h3>

<p>一直到此处，我们将分析暂停，看看此时的磁盘————包括MBR的前63个扇区的数据均已被木马修改，加入了恶意代码。但磁盘分区本身还并未被实质性的破坏。我们用工具打开磁盘可以清楚的看到已经被修改的MBR和被加入的恶意代码：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603333631481104.png" alt="p10" /></p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603333885646116.png" alt="p11" /></p>

<p>细看被修改的MBR代码，会在一开始便将第34扇区（此处计数是从0开始，也就是文章之前所说的第35个扇区处）的数据循环载入内存中并执行：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603334047938124.png" alt="p12" /></p>

<h3>继续跑起来！看看重启之后的场景</h3>

<p>OK，此时我们让木马继续，触发系统蓝屏之后自动重启，会出现一段磁盘修复信息：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603334145112133.png" alt="p13" /></p>

<p>如上图所示，系统会提示你正在修复C盘所在的文件系统，并用全大写的字体警示用户（虽然用英文写这些所谓的“警示”内容在国内完全水土不服）————千万不要停止关机，一旦你关机了你的数据就全毁了！</p>

<p>然而事实上呢？你不关机你的数据也全毁了————因为这段提示信息根本就不是系统原本的修复程序，而是木马自己写入的欺骗性提示。而下方显示的进度数值却是有真实意义的：这个进度恰恰是恶意代码在加密你磁盘的进度！下图是直接使用工具打开磁盘，从病毒修改的磁盘数据中找到的对应的文字：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603334387970143.png" alt="p14" /></p>

<p>在所谓的“文件系统修复”完成后，用户面对的便是一个闪瞎双眼的骷髅图标（1.截图无法展示闪烁效果，实际看到的是红白颜色切换的闪烁；2.平心而论这个界面制作的还是挺精良的！⊙﹏⊙b）</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603334420571152.png" alt="p15" /></p>

<p>按要求“Press Any Key”之后进入正题！是不是很熟悉？去下个洋葱浏览器（Tor Browser）然后访问我指定的链接，输入你的个人解密编码并交钱，拿到解密秘钥，才能让系统恢复正常！</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603334662543162.png" alt="p16" /></p>

<p>和之前流行了多年的CTB-Locker如出一辙的敲诈手法，只不过这次不再是加密你的特定文件了，而是加密你的整个磁盘……</p>

<h1>0x03 关于防范和修复</h1>

<hr />

<p>这个木马虽然很独具匠心的调用ZwRaiseHardError函数而非shutdown命令来重启系统，但毕竟整个木马的设计思路都是建立在修改系统MBR基础上的，所以对于大多带有主防功能且和MBR木马对抗了这么多年的安全软件来说，在修改MBR这一个动作上就已经可以拦截了。加之根据我们的监控该木马并没有在国内大规模爆发，所以只要大家安装有靠谱的安全软件，对Petya木马就不必太过于恐慌。</p>

<p>但当你没有使用安全软件进行防护的话……那就牵扯到修复问题了。这个就比较麻烦了。</p>

<ul>
<li>如果你是意识流神操作</li>
</ul>

<p>假设你的意识足够好，手速足够快。只是一时大意不慎中招。一定要记得赶在进入那个假的“文件系统修复”界面之前彻底关机（此处建议拔电源）。如果你做到了————恭喜！后面的步骤不会很复杂。你只需要找到一个PE系统，让你的机器从U盘引导进入PE系统，然后用里面的任何关于引导修复的工具去重建MBR即可。</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603334716753172.png" alt="p17" /></p>

<p>因为此时虽然恶意代码已经写入，但还没有开始加密磁盘，只要你重建了MBR，正常的系统MBR是不会执行木马写入的恶意代码的。所以那些恶意代码只会成为一大段代码尸体————静静的躺在你的磁盘里，永远不会被执行。当然，如果你连尸体都不想要，在重建MBR之后，再执行一下下面那个“清楚保留扇区”，那么连尸体都会帮你清理干净的。&#40;^o^)/~</p>

<ul>
<li>如果你是个信息安全达人</li>
</ul>

<p>如果你有经常备份系统的习惯，那么不多废话了……按照上面的步骤重建MBR之后，还原系统就好了</p>

<ul>
<li>如果你什么准备都没有</li>
</ul>

<p>如果这样那很不幸，但即便如此你其实依然不用付赎金。因为和典型的CTB-Locker不同，这个木马并没有更改你的任何文件，而只是破坏了磁盘整体的文件索引。所以如果你真的有很重要的文件需要恢复，并且不是很在乎系统本身是否还能启动，那你完全可以自己动手：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603334942091182.png" alt="p18" /></p>

<p>但如果你希望是把整个系统完好无损的还原出来，那就需要比较专业的工具和专业的方法了，所以去找专业的数据恢复服务更为省心一些。</p>

<ul>
<li>顺便说一句</li>
</ul>

<p>此处顺带说一句，最近国内也出现了一款类似的修改MBR的敲诈木马：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603335185513192.jpg" alt="p19" /></p>

<p>如果是这个木马的话，只需要按照上面重建MBR的步骤，之后再加一步找回丢失的分区表即可完成修复————因为该木马只破坏了分区表，而并没有对文件索引下手：</p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603335311878201.png" alt="p20" /></p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603335551018213.png" alt="p21" /></p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603335791195222.png" alt="p22" /></p>

<p><img src="http://static.wooyun.org//drops/20160406/2016040603335885186231.png" alt="p23" /></p>

<p>!&#91;p24&#93;&#91;24&#93;</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          